<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Release 6.5</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Release Notes"
HREF="release.html"><LINK
REL="PREVIOUS"
TITLE="Release 6.5.1"
HREF="release-6-5-1.html"><LINK
REL="NEXT"
TITLE="Release 6.4.2"
HREF="release-6-4-2.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Release 6.5.1"
HREF="release-6-5-1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="release.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Appendix E. Release Notes</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Release 6.4.2"
HREF="release-6-4-2.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="RELEASE-6-5"
>E.188. Release 6.5</A
></H1
><DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
><B
>Release Date: </B
>1999-06-09</P
></BLOCKQUOTE
></DIV
><P
>   This release marks a major step in the development team's mastery of the source
   code we inherited from Berkeley.  You will see we are now easily adding
   major features, thanks to the increasing size and experience of our
   world-wide development team.
  </P
><P
>   Here is a brief summary of the more notable changes:

   <P
></P
></P><DIV
CLASS="VARIABLELIST"
><DL
><DT
>Multiversion concurrency control(MVCC)</DT
><DD
><P
>       This removes our old table-level locking, and replaces it with
       a locking system that is superior to most commercial database
       systems.  In a traditional system, each row that is modified
       is locked until committed, preventing reads by other users.
       MVCC uses the natural multiversion nature of
       <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> to allow readers to
       continue reading consistent data during writer activity.
       Writers continue to use the compact pg_log transaction system.
       This is all performed without having to allocate a lock for
       every row like traditional database systems.  So, basically,
       we no longer are restricted by simple table-level locking; we
       have something better than row-level locking.
      </P
></DD
><DT
>Hot backups from <SPAN
CLASS="APPLICATION"
>pg_dump</SPAN
></DT
><DD
><P
>       <SPAN
CLASS="APPLICATION"
>pg_dump</SPAN
> takes advantage of the new
       MVCC features to give a consistent database dump/backup while
       the database stays online and available for queries.
      </P
></DD
><DT
>Numeric data type</DT
><DD
><P
>       We now have a true numeric data type, with
       user-specified precision.
      </P
></DD
><DT
>Temporary tables</DT
><DD
><P
>       Temporary tables are guaranteed to have unique names
       within a database session, and are destroyed on session exit.
      </P
></DD
><DT
>New SQL features</DT
><DD
><P
>       We now have CASE, INTERSECT, and EXCEPT statement
       support.  We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
       SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
      </P
></DD
><DT
>Speedups</DT
><DD
><P
>       We continue to speed up <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>,
       thanks to the variety of talents within our team.  We have
       sped up memory allocation, optimization, table joins, and row
       transfer routines.
      </P
></DD
><DT
>Ports</DT
><DD
><P
>       We continue to expand our port list, this time including
       <SPAN
CLASS="SYSTEMITEM"
>Windows NT</SPAN
>/<SPAN
CLASS="SYSTEMITEM"
>ix86</SPAN
> and <SPAN
CLASS="SYSTEMITEM"
>NetBSD</SPAN
>/<SPAN
CLASS="SYSTEMITEM"
>arm32</SPAN
>.
      </P
></DD
><DT
>Interfaces</DT
><DD
><P
>       Most interfaces have new versions, and existing functionality
       has been improved.
      </P
></DD
><DT
>Documentation</DT
><DD
><P
>       New and updated material is present throughout the
       documentation. New <ACRONYM
CLASS="ACRONYM"
>FAQ</ACRONYM
>s have been
       contributed for <SPAN
CLASS="SYSTEMITEM"
>SGI</SPAN
> and <SPAN
CLASS="SYSTEMITEM"
>AIX</SPAN
> platforms.
       The <I
CLASS="CITETITLE"
>Tutorial</I
> has introductory information
       on <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> from Stefan Simkovics.
       For the <I
CLASS="CITETITLE"
>User's Guide</I
>, there are
       reference pages covering the postmaster and more utility
       programs, and a new appendix
       contains details on date/time behavior.
       The <I
CLASS="CITETITLE"
>Administrator's Guide</I
> has a new
       chapter on troubleshooting from Tom Lane.
       And the <I
CLASS="CITETITLE"
>Programmer's Guide</I
> has a
       description of query processing, also from Stefan, and details
       on obtaining the <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> source
       tree via anonymous <SPAN
CLASS="PRODUCTNAME"
>CVS</SPAN
> and
       <SPAN
CLASS="PRODUCTNAME"
>CVSup</SPAN
>.
      </P
></DD
></DL
></DIV
><P>
  </P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN129605"
>E.188.1. Migration to Version 6.5</A
></H2
><P
>    A dump/restore using <SPAN
CLASS="APPLICATION"
>pg_dump</SPAN
>
    is required for those wishing to migrate data from any
    previous release of <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>.
    <SPAN
CLASS="APPLICATION"
>pg_upgrade</SPAN
> can <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>not</I
></SPAN
>
    be used to upgrade to this release because the on-disk structure
    of the tables has changed compared to previous releases.
   </P
><P
>    The new Multiversion Concurrency Control (MVCC) features can
    give somewhat different behaviors in multiuser
    environments. <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Read and understand the following section
     to ensure that your existing applications will give you the
     behavior you need.</I
></SPAN
>
   </P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN129614"
>E.188.1.1. Multiversion Concurrency Control</A
></H3
><P
>     Because readers in 6.5 don't lock data, regardless of transaction
     isolation level, data read by one transaction can be overwritten by
     another. In other words, if a row is returned by
     <TT
CLASS="COMMAND"
>SELECT</TT
> it doesn't mean that this row really exists
     at the time it is returned (i.e. sometime after the statement or
     transaction began) nor that the row is protected from being deleted or
     updated by concurrent transactions before the current transaction does
     a commit or rollback.
    </P
><P
>     To ensure the actual existence of a row and protect it against
     concurrent updates one must use <TT
CLASS="COMMAND"
>SELECT FOR UPDATE</TT
> or
     an appropriate <TT
CLASS="COMMAND"
>LOCK TABLE</TT
> statement. This should be
     taken into account when porting applications from previous releases of
     <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> and other environments.
    </P
><P
>     Keep the above in mind if you are using
     <TT
CLASS="FILENAME"
>contrib/refint.*</TT
> triggers for
     referential integrity. Additional techniques are required now. One way is
     to use <TT
CLASS="COMMAND"
>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</TT
>
     command if a transaction is going to update/delete a primary key and
     use <TT
CLASS="COMMAND"
>LOCK parent_table IN SHARE MODE</TT
> command if a
     transaction is going to update/insert a foreign key.

     </P><DIV
CLASS="NOTE"
><BLOCKQUOTE
CLASS="NOTE"
><P
><B
>Note: </B
>       Note that if you run a transaction in SERIALIZABLE mode then you must
       execute the <TT
CLASS="COMMAND"
>LOCK</TT
> commands above before execution of any
       <ACRONYM
CLASS="ACRONYM"
>DML</ACRONYM
> statement
       (<TT
CLASS="COMMAND"
>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</TT
>) in the
       transaction.
      </P
></BLOCKQUOTE
></DIV
><P>
    </P
><P
>     These inconveniences will disappear in the future
     when the ability to read dirty
     (uncommitted) data (regardless of isolation level) and true referential
     integrity will be implemented.
    </P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN129632"
>E.188.2. Changes</A
></H2
><P
></P><PRE
CLASS="PROGRAMLISTING"
>Bug Fixes
---------
Fix text&lt;-&gt;float8 and text&lt;-&gt;float4 conversion functions(Thomas)
Fix for creating tables with mixed-case constraints(Billy)
Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
Fix bug in pg_dump -z
Memory overrun cleanups(Tatsuo)
Fix for lo_import crash(Tatsuo)
Adjust handling of data type names to suppress double quotes(Thomas)
Use type coercion for matching columns and DEFAULT(Thomas)
Fix deadlock so it only checks once after one second of sleep(Bruce)
Fixes for aggregates and PL/pgsql(Hiroshi)
Fix for subquery crash(Vadim)
Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
Fix for pg_dump -d or -D and  quote special characters in INSERT
Repair serious problems with dynahash(Tom)
Fix INET/CIDR portability problems
Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
Fix executor so mergejoin of different column types works(Tom)
Fix for Alpha OR selectivity bug
Fix OR index selectivity problem(Bruce)
Fix so \d shows proper length for char()/varchar()(Ryan)
Fix tutorial code(Clark)
Improve destroyuser checking(Oliver)
Fix for Kerberos(Rodney McDuff)
Fix for dropping database while dirty buffers(Bruce)
Fix so sequence nextval() can be case-sensitive(Bruce)
Fix !!= operator
Drop buffers before destroying database files(Bruce)
Fix case where executor evaluates functions twice(Tatsuo)
Allow sequence nextval actions to be case-sensitive(Bruce)
Fix optimizer indexing not working for negative numbers(Bruce)
Fix for memory leak in executor with fjIsNull
Fix for aggregate memory leaks(Erik Riedel)
Allow user name containing a dash to grant privileges
Cleanup of NULL in inet types
Clean up system table bugs(Tom)
Fix problems of PAGER and \? command(Masaaki Sakaida)
Reduce default multisegment file size limit to 1GB(Peter)
Fix for dumping of CREATE OPERATOR(Tom)
Fix for backward scanning of cursors(Hiroshi Inoue)
Fix for COPY FROM STDIN when using \i(Tom)
Fix for subselect is compared inside an expression(Jan)
Fix handling of error reporting while returning rows(Tom)
Fix problems with reference to array types(Tom,Jan)
Prevent UPDATE SET oid(Jan)
Fix pg_dump so -t option can handle case-sensitive tablenames
Fixes for GROUP BY in special cases(Tom, Jan)
Fix for memory leak in failed queries(Tom)
DEFAULT now supports mixed-case identifiers(Tom)
Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
Disable use of pg_dump with both -o and -d options(Bruce)
Allow pg_dump to properly dump group privileges(Bruce)
Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
Fix for computations in views(Jan)
Fix for aggregates on array indexes(Tom)
Fix for DEFAULT handles single quotes in value requiring too many quotes
Fix security problem with non-super users importing/exporting large objects(Tom)
Rollback of transaction that creates table cleaned up properly(Tom)
Fix to allow long table and column names to generate proper serial names(Tom)

Enhancements
------------
Add "vacuumdb" utility
Speed up libpq by allocating memory better(Tom)
EXPLAIN all indexes used(Tom)
Implement CASE, COALESCE, NULLIF  expression(Thomas)
New pg_dump table output format(Constantin)
Add string min()/max() functions(Thomas)
Extend new type coercion techniques to aggregates(Thomas)
New moddatetime contrib(Terry)
Update to pgaccess 0.96(Constantin)
Add routines for single-byte "char" type(Thomas)
Improved substr() function(Thomas)
Improved multibyte handling(Tatsuo)
Multiversion concurrency control/MVCC(Vadim)
New Serialized mode(Vadim)
Fix for tables over 2gigs(Peter)
New SET TRANSACTION ISOLATION LEVEL(Vadim)
New LOCK TABLE IN ... MODE(Vadim)
Update ODBC driver(Byron)
New NUMERIC data type(Jan)
New SELECT FOR UPDATE(Vadim)
Handle "NaN" and "Infinity" for input values(Jan)
Improved date/year handling(Thomas)
Improved handling of backend connections(Magnus)
New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
New TCL_ARRAYS option(Massimo)
New INTERSECT and EXCEPT(Stefan)
New pg_index.indisprimary for primary key tracking(D'Arcy)
New pg_dump option to allow dropping of tables before creation(Brook)
Speedup of row output routines(Tom)
New READ COMMITTED isolation level(Vadim)
New TEMP tables/indexes(Bruce)
Prevent sorting if result is already sorted(Jan)
New memory allocation optimization(Jan)
Allow psql to do \p\g(Bruce)
Allow multiple rule actions(Jan)
Added LIMIT/OFFSET functionality(Jan)
Improve optimizer when joining a large number of tables(Bruce)
New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
Improved int8 support(Ryan Bradetich, Thomas, Tom)
New routines to convert between int8 and text/varchar types(Thomas)
New bushy plans, where meta-tables are joined(Bruce)
Enable right-hand queries by default(Bruce)
Allow reliable maximum number of backends to be set at configure time
     (--with-maxbackends and postmaster switch (-N backends))(Tom)
GEQO default now 10 tables because of optimizer speedups(Tom)
Allow NULL=Var for MS-SQL portability(Michael, Bruce)
Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
Allow psql \d on a view show query(Ryan)
Speedup for LIKE(Bruce)
Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
Make % operator have precedence like /(Bruce)
Add new postgres -O option to allow system table structure changes(Bruce)
Update contrib/pginterface/findoidjoins script(Tom)
Major speedup in vacuum of deleted rows with indexes(Vadim)
Allow non-SQL functions to run different versions based on arguments(Tom)
Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
Add version number in start-up banners for psql(Masaaki Sakaida)
New contrib/vacuumlo removes large objects not referenced(Peter)
New initialization for table sizes so non-vacuumed tables perform better(Tom)
Improve error messages when a connection is rejected(Tom)
Support for arrays of char() and varchar() fields(Massimo)
Overhaul of hash code to increase reliability and performance(Tom)
Update to PyGreSQL 2.4(D'Arcy)
Changed debug options so -d4 and -d5 produce different node displays(Jan)
New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
Better optimization statistics for system table access(Tom)
Better handling of non-default block sizes(Massimo)
Improve GEQO optimizer memory consumption(Tom)
UNION now supports ORDER BY of columns not in target list(Jan)
Major libpq++ improvements(Vince Vielhaber)
pg_dump now uses -z(ACL's) as default(Bruce)
backend cache, memory speedups(Tom)
have pg_dump do everything in one snapshot transaction(Vadim)
fix for large object memory leakage, fix for pg_dumping(Tom)
INET type now respects netmask for comparisons
Make VACUUM ANALYZE only use a readlock(Vadim)
Allow VIEWs on UNIONS(Jan)
pg_dump now can generate consistent snapshots on active databases(Vadim)

Source Tree Changes
-------------------
Improve port matching(Tom)
Portability fixes for SunOS
Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
New port to Cobalt Qube(Mips) running Linux(Tatsuo)
Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
Port to NetBSD/macppc(Toshimi Aoki)
Fix for tcl/tk configuration(Vince)
Removed CURRENT key word for rule queries(Jan)
NT dynamic loading now works(Daniel Horak)
Add ARM32 support(Andrew McMurry)
Better support for HP-UX 11 and UnixWare
Improve file handling to be more uniform, prevent file descriptor leak(Tom)
New install commands for plpgsql(Jan)</PRE
><P>
   </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="release-6-5-1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="release-6-4-2.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Release 6.5.1</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="release.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Release 6.4.2</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>